package com.txc.pay.enums;


import com.txc.pay.config.AliPayConfig;
import com.txc.pay.config.PayConfig;
import com.txc.pay.config.WxPayConfig;
import lombok.Getter;

import java.util.*;

/**
 * @EnumName: PayType
 * @Description: 支付类型
 * @Author: TXC
 * @Date: 2023-12-27 10:45
 **/
@Getter
public enum PayType {
    ALIPAY("ALIPAY", "支付宝"),
    WECHAT("WECHAT", "微信");

    private final String value;
    private final String code;

    PayType(String value, String code) {
        this.value = value;
        this.code = code;
    }

    /**
     * 获取支付方式对应的配置
     *
     * @param value 支付方式
     * @param json 配置（json格式）
     * @return
     */
    public static PayConfig getConfig(String value, String json) {
        if (ALIPAY.getValue().equals(value)) {
            return AliPayConfig.jsonToBean(json);
        }
        if (WECHAT.getValue().equals(value)){
            return WxPayConfig.jsonToBean(json);
        }
        return null;
    }

    public static PayType getEnum(String value) {
        for (PayType payType : PayType.values()) {
            if (payType.getValue().equals(value)) {
                return payType;
            }
        }
        return null;
    }

    public Map<String, String> toMap() {
        Map<String, String> map = new HashMap<>();
            map.put("type", this.getValue());
            map.put("name", this.getCode());

        return map;
    }

    public static List<PayType> getAll() {
        List<PayType> result = new ArrayList<>();
        Collections.addAll(result, PayType.values());
        return result;
    }
}
